package com.lvzero.answer.service;

import com.lvzero.answer.base.BaseService;
import com.lvzero.answer.common.Result;
import com.lvzero.answer.mapper.UserMapper;
import com.lvzero.answer.util.DateUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;

/**
 * 用户
 */
@Service
public class UserService extends BaseService<UserMapper> {


    /**
     * 答题完成分享后，保存用户信息
     * 如果已经保存过，就更新次数
     *
     * @param map
     * @return
     */
    @Transactional
    public Result shareOk(Map map) {

        //根据uid 获取用户Map
        Map res = getUserByUid(map);
        //补全数据
        map.put("update_time", DateUtil.formatCurTime());
        //如果用户为空
        if (res == null) {//插入新的数据
            map.put("create_time", DateUtil.formatCurTime());
            map.put("share_times", 1);
            return Result.success(mapper.insert(map));
        }

        // 【】1天之内多次的分享只能算1次
        if (DateUtil.shouldUpdate(res)) {
            //更新
        } else {
            //分享成功，只更新时间，不更新分享的次数
            System.out.println("只更新时间------------------");
            return Result.success(mapper.updateDate(map));
        }

        //更新数据
        return Result.success(mapper.update(map));
    }


    /**
     * 根据uid 获取用户信息
     *
     * @param map
     * @return
     */
    public Map getUserByUid(Map map) {
        Map res = mapper.getUserByUid(map);
        return res;
    }

    /**
     * 获奖后更新用户信息
     *
     * @param map
     * @return
     */
    public Result updateUser(Map map) {
        //如果已经抽奖后 那就不能再次的抽奖了
        Map user = mapper.getUserByUid(map);
        if(user.get("phone")!=null){
            return Result.fail(201,"您已经抽奖了，不能再次抽奖！");
        }

        map.put("update_time", DateUtil.formatCurTime());
        Integer res = mapper.updateUser(map);
        return Result.success(res);
    }
}
